#include "..\frame\ASAppFw.h"
#include "ASApp.h"
#include "..\screen\ASScreenMgr.h"
#include "..\control\ASImageMgr.h"
#ifdef AS_TEST_SCREEN_ENABLE
#include "..\screen\ASTestScreen.h"
#else
#include "..\screen\ASLoadingScreen.h"
#endif
#include "ASAppImgInfo.h"
#include "..\tool\ASFreePay.h"
#include "ASFTData.h"
#include "..\screen\ASScreenShare.h"

static as_app s_as_test_app;
static ASINT s_timer = -1;

void as_app_set_show_advbar(ASBOOL if_show)
{
    s_as_test_app.if_show_advbar = if_show;
}

ASBOOL as_app_get_show_advbar(void)
{
    return s_as_test_app.if_show_advbar;
}

ASINT as_app_get_advbar_height(void)
{
    if(as_app_get_show_advbar())
        return ADV_BAR_H;
    else
        return 0;
}

void as_app_init(void)
{
    as_log_app("<app>----as_app_init");
    as_reset_clip();
    as_memset(&s_as_test_app, 0, sizeof(s_as_test_app));
    s_as_test_app.img_mgr_p = as_image_resmgr_get_instance();
    s_as_test_app.scr_mgr_p = as_get_screen_stack_instance();
#ifdef AS_TEST_SCREEN_ENABLE
    as_enter_test_screen();
#else
    //as_free_pay_init();
    as_sync_internal_img_info();
    as_enter_loading_screen();
#endif
}

void as_app_deinit(void)
{
    if(s_as_test_app.scr_mgr_p)
        s_as_test_app.scr_mgr_p->clear_all();

    if(s_as_test_app.img_mgr_p)
        s_as_test_app.img_mgr_p->release(s_as_test_app.img_mgr_p);
}

void as_app_pause(void)
{
    as_screen* scr_p = s_as_test_app.scr_mgr_p->get_cur_screen();
    scr_p->pause(scr_p);
}

void as_app_resume(void)
{
    as_screen* scr_p = s_as_test_app.scr_mgr_p->get_cur_screen();
    as_reset_clip();
    as_screen_show_adv_bar();
    scr_p->resume(scr_p);
}

void as_app_key_hdlr(ASINT evt, ASINT key_code)
{
    as_screen* scr_p;

    if(!s_as_test_app.scr_mgr_p)
        return;

    scr_p = s_as_test_app.scr_mgr_p->get_cur_screen();

    if(!scr_p)
        return;

    if(scr_p->keyevt_hdlr)
        scr_p->keyevt_hdlr(scr_p, evt, key_code);
}

void as_app_touch_hdlr(ASINT evt, ASINT x, ASINT y)
{
    as_screen* scr_p = as_get_screen_stack_instance()->get_cur_screen();

    if(!scr_p)
        return;

    if(scr_p->penevt_hdlr)
        scr_p->penevt_hdlr(scr_p, evt, x, y);
}